#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct ne
{
	int v,i;
}b[100000];
int n,a[100000],t,l[100000];
bool cmpp(ne a,ne b)
{
	return a.v<b.v;
}
void s1(int i)
{
	ne a=b[i];
	b[i]=b[i+1];
	b[i+1]=a;
	int g=l[b[i].i];
	l[b[i].i]=l[b[i+1].i];
	l[b[i+1].i]=g;
	return;
}
void s2(int i)
{
	ne a=b[i];
	b[i]=b[i-1];
	b[i-1]=a;
	int g=l[b[i].i];
	l[b[i].i]=l[b[i-1].i];
	l[b[i-1].i]=g;
	return;
}
int main()
{
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	scanf("%d%d",&n,&t);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		b[i].i=i;
		b[i].v=a[i];
	}
	sort(b+1,b+1+n,cmpp);
	for(int i=1;i<n;i++)
		if(b[i].v==b[i+1].v&&b[i].i>b[i+1].i)
		{
			for(int j=i;j<n;j++)if(b[j].v==b[j+1].v&&b[j].i>b[j+1].i)s1(j);
			i--;
		}
	for(int i=1;i<=n;i++)
	l[b[i].i]=i;
	for(int i=0;i<t;i++)
	{
		int u,o,p;
		scanf("%d",&u);
		if(u==1)
		{
			scanf("%d%d",&o,&p);
			if(p>b[l[o]].v)
			{
				b[l[o]].v=p;	
				for(int j=l[o];j<n;j++)
				{
					if(b[j].v>b[j+1].v||(b[j].v==b[j+1].v&&b[j].i>b[j+1].i))s1(j);
				}
			}
			if(p<b[l[o]].v)
			{
				b[l[o]].v=p;
				for(int j=l[o];j>1;j--)
				{
					if(b[j].v<b[j-1].v||(b[j].v==b[j-1].v&&b[j].i<b[j-1].i))s2(j);
				}
			}
			
		}
		if(u==2)
		{
			scanf("%d",&o);
			printf("%d\n",l[o]); 
		}
	}
	
	return 0;
}
